package com.ztr.bigdecima;

import java.math.BigDecimal;

public class ProjectTest {

    /**
     *  测试用例
     *  创建一个具有参数所指定整数值的对象
     * 	BigDecimal(int)
     * 	创建一个具有参数所指定双精度值的对象
     * 	BigDecimal(double)
     * 	创建一个具有参数所指定整数值的对象
     * 	BigDecimal(long)
     * 	创建一个具有参数所指定以字符串表示的数值的对象
     * 	BigDecimal(String)
     */

    //这里对比了两种形式，第一种直接value写数字的值，第二种用string来表示
    static BigDecimal num1 = new BigDecimal(0.005);
    static BigDecimal num2 = new BigDecimal(1000000);
    static BigDecimal num3 = new BigDecimal(-1000000);

    //尽量用字符串的形式初始化
    static BigDecimal num12 = new BigDecimal("0.005");
    static BigDecimal num22 = new BigDecimal("1000000");
    static BigDecimal num32 = new BigDecimal("-1000000");

    public static void main(String[] args) {
        //加法 add()  两者区别是：第一种会有小数，第二种就没有，因为一种是直接写数字，第二种是字符串
        BigDecimal result1 =  num1.add(num2);
        System.out.println("result1加法结果为：" + result1);

        BigDecimal result2 =  num12.add(num22);
        System.out.println("result2加法结果为：" + result2);

        System.out.println("======================");

        //减法 subtract()
        BigDecimal result3 =  num2.subtract(num1);
        System.out.println("result3减法结果为：" + result3);

        BigDecimal result4 =  num22.subtract(num12);
        System.out.println("result4减法结果为：" + result4);

        System.out.println("======================");

        //乘法 multiply()
        BigDecimal result5 =  num2.multiply(num1);
        System.out.println("result3减法结果为：" + result5);

        BigDecimal result6=  num22.multiply(num12);
        System.out.println("result4减法结果为：" + result6);

        System.out.println("======================");

        //绝对值 abs()
        BigDecimal result7 =  num3.abs();
        System.out.println("result7绝对值结果为：" + result7);
        BigDecimal result8 =  num32.abs();
        System.out.println("result8绝对值结果为：" + result8);
        System.out.println("======================");

        //除法 divide()
        //num1、num12 除数， 20 精确小数位，  BigDecimal.ROUND_HALF_UP 舍入模式
        //即为(BigDecimal divisor 除数, int scale 精确小数位,  int roundingMode 舍入模式)
        BigDecimal result9 = num2.divide(num1, 20, BigDecimal.ROUND_HALF_UP);
        System.out.println("result9除法结果为：" + result9);
        BigDecimal result10 = num22.divide(num12, 20, BigDecimal.ROUND_HALF_UP);
        System.out.println("result10除法结果为：" + result10);
        System.out.println("======================");

        //去除末尾多余的0：
        String result11 = new BigDecimal("100.000").stripTrailingZeros().toPlainString();
        System.out.println("result11去除多余的0：" + result11);

    }

}
